﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Froggy;
using GEA_Controle_Processos.Data.Dados;

namespace GEA_Controle_Processos.Data.Negocio
{
    [System.ComponentModel.DataObject(true)]
    public class NegocioEndereco
    {
        private readonly IRepositorioGenerico<Endereco, BD_GerenciadorVendasEntities> repositorioEndereco;
        private readonly IRepositorioGenerico<Uf, BD_GerenciadorVendasEntities> repositorioUf;
        private readonly IRepositorioGenerico<Cidade, BD_GerenciadorVendasEntities> repositorioCidade;

        public NegocioEndereco()
        {
            repositorioEndereco = new RepositorioGenerico<Endereco, BD_GerenciadorVendasEntities>("chave");
            repositorioUf = new RepositorioGenerico<Uf, BD_GerenciadorVendasEntities>("chave");
            repositorioCidade = new RepositorioGenerico<Cidade, BD_GerenciadorVendasEntities>("chave");
        }

        [System.ComponentModel.DataObjectMethod(System.ComponentModel.DataObjectMethodType.Select)]
        public List<Uf> ObterTodosUfs()
        {
            return repositorioUf.ObterTodos().ToList();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="uf"></param>
        /// <returns></returns>
        public List<Cidade> ObterCidade_Uf(string uf)
        {
            return repositorioCidade.Obter(cidade => cidade.Uf_ufNome == uf).ToList();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="idCidade"></param>
        /// <returns></returns>
        public Cidade ObterCidade(int idCidade)
        {
            return repositorioCidade.ObterEntidade(cid => cid.idCidade == idCidade);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="idEndereco"></param>
        /// <returns></returns>
        public Endereco ObterEndereco(int idEndereco)
        {
            return repositorioEndereco.ObterEntidade(end => end.idEndereco == idEndereco);
        }

        public bool Inserir(Endereco endereco)
        {
            repositorioEndereco.Inserir(endereco);
            return repositorioEndereco.SaveChanges() > 0;
        }

    }
}
